package com.work.yshop.mvp.presenter;

import android.os.Handler;
import android.text.TextUtils;

import com.work.yshop.mvp.contract.LoginContract;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.Timer;
import java.util.TimerTask;

/**
 * 登录功能的Presenter实现类
 */
public class LoginPresenter extends LoginContract.Presenter {

    private Timer timer;
    private final Handler handler = new Handler();
    private static final long TIME_UPDATE_INTERVAL = 60000; // 1分钟更新一次时间
    
    // 默认账号密码
    private static final String DEFAULT_PHONE = "18888888888";
    private static final String DEFAULT_PASSWORD = "123456";

    @Override
    public void login(String phone, String password, int userType) {
        // 验证手机号
        if (TextUtils.isEmpty(phone)) {
            view.showPhoneError("请输入手机号");
            return;
        } else if (phone.length() != 11) {
            view.showPhoneError("请输入正确的手机号");
            return;
        } else {
            view.showPhoneError(null);
        }

        // 验证密码
        if (TextUtils.isEmpty(password)) {
            view.showPasswordError("请输入密码");
            return;
        } else if (password.length() < 6) {
            view.showPasswordError("密码长度至少为6位");
            return;
        } else {
            view.showPasswordError(null);
        }

        // 显示加载中
        view.showLoading();
        
        // 模拟网络请求
        // 在实际项目中，这里应该调用Model层的方法进行网络请求
        // 延迟1秒模拟网络请求
        new Handler().postDelayed(() -> {
            // 隐藏加载中
            view.hideLoading();
            
            // 检查是否是默认账号密码或者任意输入都允许登录
            if ((DEFAULT_PHONE.equals(phone) && DEFAULT_PASSWORD.equals(password)) || true) {
                // 登录成功
                view.onLoginSuccess(userType);
            } else {
                view.showError("账号或密码错误");
            }
        }, 1000);
    }

    @Override
    public void updateTime() {
        // 立即更新一次时间
        updateCurrentTime();
        
        // 定时更新时间
        startTimeUpdateTimer();
    }
    
    /**
     * 开始定时更新时间
     */
    private void startTimeUpdateTimer() {
        // 如果已经有定时器，先取消
        stopTimeUpdateTimer();
        
        timer = new Timer();
        timer.scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
                handler.post(() -> updateCurrentTime());
            }
        }, TIME_UPDATE_INTERVAL, TIME_UPDATE_INTERVAL);
    }
    
    /**
     * 停止定时更新时间
     */
    private void stopTimeUpdateTimer() {
        if (timer != null) {
            timer.cancel();
            timer = null;
        }
    }
    
    /**
     * 更新当前时间
     */
    private void updateCurrentTime() {
        if (isViewAttached()) {
            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm", Locale.getDefault());
            String currentTime = sdf.format(new Date());
            view.updateStatusBarTime(currentTime);
        }
    }

    @Override
    public void detachView() {
        stopTimeUpdateTimer();
        super.detachView();
    }
} 